home *** CD-ROM | disk | FTP | other *** search
- /* LAPMisc.h
- C definitions of parameter block entries needed for IEEE 802.3 LAP
-
- Copyright Apple Computer, Inc. 1990-91 All rights reserved
-
- */
-
- /* IP internal error codes */
- #define ipOpenProtErr -23030 /* can't open new protocol, table full */
- #define ipCloseProtErr -23031 /* can't find protocol to close */
- #define ipBadWDSErr -23034 /* error in WDS format */
- #define ipQuenchErr -23038 /* destination being quenched */
-
-
- struct IPwdsEntry {
- unsigned short length; /* length of buffer */
- struct ip4_header *ptr; /* pointer to buffer */
- };
-
- struct icmpEchoInfo {
- unsigned long echoRequestOut; /* time in ticks of when the echo request went out */
- unsigned long echoReplyIn; /* time in ticks of when the reply was received */
- struct rdsEntry echoedData; /* data received in responce */
- Ptr options;
- unsigned long userDataPtr; /* user Ptr for Apps use */
- };
-
- /* define standard structure for IP packet buffer */
- /* NOTE: TCP and UDP use PKT.equ for definition of IPB */
-
- typedef struct ipbuf {
- CntrlParam iop; /* MAC OS I/O Param block */
- struct icmpEchoInfo echoInfo;
- struct ipbuf *segipb; /* pointer to segment's IPB if fragmented */
- struct LapInfo *lap; /* LAP pointer */
- ProcPtr lap_ioc; /* local net completion routine */
- ProcPtr ip_ioc; /* IP completion routine */
- ProcPtr tp_ioc; /* transport completion routine */
- ProcPtr data_ioc; /* data IOC */
- struct wdsEntry laphdr; /* local net header */
- struct IPwdsEntry ip; /* IP header */
- struct wdsEntry tp; /* TCP/UDP or ICMP header */
- struct wdsEntry data; /* TCP/UDP data */
- struct wdsEntry d1;
- struct wdsEntry d2;
- struct wdsEntry d3;
- struct wdsEntry d4; /* 8 wds entries plus 0 terminator */
- short flag; /* zero terminator to WDS */
- char packet[]; /* start of variable length pkt */
- } ipbuf;
-
- /* definition of a "read data structure" for gather reads & holding protocol
- handler information */
- struct rdStruct {
- ProcPtr ph_rp; /* pointer to "ReadPacket" routine (a4) */
- ProcPtr ph_rr; /* pointer to "ReadRest" routine 2(a4) */
- long ph_bytesleft; /* number of bytes left to read */
- union {
- /* storage for standard AppleTalk LAP protocol handler */
- struct {
- long phb_a4; /* used by driver */
- long phb_a0; /* used by driver */
- long phb_a1; /* used by driver */
- long phb_a2; /* used by driver */
- #define ph_a0 rdsparm.phb.phb_a0
- #define ph_a1 rdsparm.phb.phb_a1
- #define ph_a2 rdsparm.phb.phb_a2
- #define ph_a4 rdsparm.phb.phb_a4
- } phb;
-
- /* storage for a buffered LAP interface */
- struct {
- b_8 * lnb_ptr; /* pointer to next byte to get from buffer */
- #define lnbuf_ptr rdsparm.lnb.lnb_ptr
- } lnb;
-
- /* storage for reassembled IP packet */
- struct {
- struct fragment *rsmb_fragbuffer; /* pointer to fragment data buffer */
- b_8 * rsmb_ptr; /* pointer to next byte to get from buffer */
- int rsmb_bytesleft; /* number of bytes left in this buffer */
- int rsmb_byteoffset; /* offset of next byte in rsm'd pkt */
- #define rsm_fragbuffer rdsparm.rsm.rsmb_fragbuffer
- #define rsm_ptr rdsparm.rsm.rsmb_ptr
- #define rsm_bytesleft rdsparm.rsm.rsmb_bytesleft
- #define rsm_byteoffset rdsparm.rsm.rsmb_byteoffset
- } rsm;
- } rdsparm;
- Boolean lapBroadcast; /* LAP-level broadcast */
- Boolean ipBroadcast; /* IP-level broadcast */
- struct LAPInfo *lap; /* information about receiving LAP */
- struct wdsEntry laphdr; /* local net header */
- struct IPwdsEntry ip; /* ip header */
- struct wdsEntry tp; /* TCP/UDP or ICMP header */
- struct wdsEntry data; /* TCP/UDP data */
- };
-
-
- #define String(size) struct {\
- unsigned char length; unsigned char text[size];}
-
- struct IPConfig {
- int version; /* version number */
- long flags; /* options flags enabled for this LAP */
- long dfl_ip_addr; /* default IP address */
- long dfl_net_mask; /* default subnet mask */
- long dfl_broadcast_mask; /* default broadcast mask */
- long dfl_gwy_addr; /* default gateway address */
- unsigned char server_lap_addr[8]; /* default server lap address (8 bytes) */
- long configIPAddr; /* mechanism by which IP addr was obtained */
- long configNetMask; /* mechanism by which net mask was obtained */
- long dfl_dyn_low; /* dynamic address field lower bound */
- long dfl_dyn_high; /* dynamic address field upper bound */
- String(32) dfl_zone; /* AppleTalk gateway zone */
- /* align to word */
- Boolean load; /* true - load driver into system */
- Boolean admin; /* true - allow admin cdev functions */
- Boolean netLock; /* true - lock net number */
- Boolean subnetLock; /* true - lock subnet number */
- Boolean nodeLock; /* true - lock node number */
- Boolean filler1; /* filler */
- int activeLap; /* index of LAP in a multi-LAP file */
- /* for built-in, 128 - AppleTalk, 129 - Ethernet */
- int slot; /* slot number if Mac II */
- String(32) filename; /* file name if external net interface */
- };
-
- /* values for LAP flags */
- #define useFixedAddr 0x800 /* used fixed node address */
- #define useDynamic 0x400 /* pick node address dynamically */
- #define useRARP 0x200 /* use reverse-ARP to get IP address */
- #define useSMQ 0x100 /* use ICMP subnet mask query packet */
- #define useBootP 0x40
-
- #define useKIPGW 0x008 /* use a KIP gateway */
- #define useFixedGW 0x004 /* use fixed gateway address */
- #define useRIP 0x002 /* use RIP to find gateways */
- #define useProxyARP 0x001 /* use proxy-ARP on this net */
-
- typedef OSErr (*LapStatProcPtr)(struct LAPInfo *lap, struct LAPStats *lapStatsPtr);
-
- #define LAPINFO \
- b_32 our_ip_addr; /* LAP's IP address */ \
- b_32 our_net_mask; /* LAP's IP net-mask */ \
- b_32 ip_broadcast_addr; /* IP's broadcast address */ \
- struct IPConfig lc; /* copy of IP LAP configuration resource */ \
- /* dispatch table for LAP function routines */ \
- OSErrProcPtr lapInit; /* pointer to once-only LAP init routine */ \
- OSErrProcPtr lapOpen; /* LAP open routine */ \
- OSErrProcPtr lapClose; /* LAP close routine */ \
- voidProcPtr lapUnload; /* LAP unload routine, undoes LapInit */ \
- OSErrProcPtr lapAttach; /* LAP attach PH routine */ \
- OSErrProcPtr lapDetach; /* LAP detach routine */ \
- OSErrProcPtr lapOutput; /* LAP output routine */ \
- OSErrProcPtr lapControl; /* LAP control routine */ \
- voidProcPtr lapFault; /* LAP fault isolation routine */ \
- LapStatProcPtr lapStatistics; /* LAP statistic reading routine */ \
- voidProcPtr lapConfigure; /* LAP-specific configuration routines */ \
- BooleanProcPtr lapProbe; /* send a LAP-specific address probe packet */ \
- BooleanProcPtr lapRegister; /* register our IP address on the network */ \
- voidProcPtr lapFindGateway; /* LAP-specific means of finding a gateway */ \
- BooleanProcPtr lapGwyCheck; /* LAP-specific means of verifying gateway up */\
- \
- /* IP parameters */ \
- ip_addr dfl_dns_addr; /* address of DNS from config protocol */ \
- Handle dnslHndl; /* handle to DNS configuration resource */ \
- Ptr dnsCache; /* pointer to space allocated for dns cache */ \
- int dnsCacheSize; /* size of cache allocated, in bytes */ \
- \
- /* LAP parameters */ \
- int headerSize; /* LAP header space requirements */ \
- int trailerSize; /* LAP trailer space requirements */ \
- int outMaxPacketSize; /* size of maximum output packet */ \
- int inMaxPacketSize; /* size of maximum input packet */ \
- int maxDataSize; /* size of maximum data packet */ \
- int numConnections; /* number of separate network connections */ \
- unsigned long versionFlags; /* version number flags */ \
- \
- voidProcPtr ip_ph; /* pointer to IP's protocol handler */ \
- Ptr ipGlobals; /* pointer to IP's A5 */ \
- short link_unit; /* unit number of link driver */ \
- Boolean addressConflict;/* TRUE if address conflict discovered */ \
- int lapType; /* IP LAP hardware type number */ \
- int lapAddrLength; /* size of LAP address field */ \
- unsigned char *lapAddrPtr; /* pointer to LAP address field */ \
- ProcPtr* lapCodeHndl; /* handle of LAP code resource */
-
-
- /* values for IP and Net config */
- #define LAPcnfg 1 /* LAP-specific procedure worked last time */
- #define BootPcnfg 2 /* bootp worked last time */
- #define Fixedcnfg 3 /* user had to enter address last time */
- #define SMQcnfg 1 /* subnet-mask query worked last time */
- #define FixedSMcnfg 2 /* user had to enter subnet-mask last time */
-
- struct LAPInfo {
- LAPINFO
- };
-